package com.example.OnlineStorage.service.ShareFilePermissions;

import com.example.OnlineStorage.pojo.entity.ShareFilePermissions;
import com.example.OnlineStorage.pojo.entity.ShareFiles;
import lombok.SneakyThrows;
import org.springframework.stereotype.Service;

@Service
public interface ShareFilePermissionsService {

    /**
     * 修改共享文件夹权限
     *
     * @param shareFileId 共享文件夹ID
     * @param userId 要修改的用户
     * @param permissions 要修改为的权限位
     * @param UUID      Token
     */
    void updateShareFilePermissionsByUserId(Long shareFileId, Long userId, Long permissions, String UUID);
    /**
     * 根据共享id查询该共享的所有成员权限信息
     *
     * @param shareFileId 共享文件夹ID
     * @param page 第几页
     * @return 返回一页的成员权限信息
     */
    ShareFilePermissions[] getShareFilePermissionsByShaFileId(Long shareFileId, Integer page);

    /**
     * 查询一个共享文件夹有多少个成员
     *
     * @param shareFileId 共享文件夹ID
     * @return 返回共享文件夹的成员数量
     */
    Long getShareFilePermissionsCountByShareFileId(Long shareFileId);

    /**
     * 查询用户加入的共享文件夹列表
     *
     * @param page 第几页
     * @param UUID Token
     * @return 返回一页用户加入的共享文件夹信息
     */
    ShareFilePermissions[] getShareFilePermissionsByUserId(Integer page, String UUID);

    /**
     * 搜索共享文件夹
     *
     * @param name 搜索关键字
     * @return 返回符合的共享文件夹列表
     */
    ShareFiles[] selectByName(String name);

    /**
     * 加入一个共享文件夹
     *
     * @param shareFileId 共享文件夹ID
     * @param UUID Token
     */
    void joinShareFiles(Long shareFileId, String UUID);

    /**
     * 获取共享文件夹的文件信息
     * @param shareFileId 共享文件夹ID
     * @param UUID Token
     * @return 共享文件夹的所有文件信息
     */
    String getShareFilesFileDataJson(Long shareFileId, String UUID);
}
